The present application relates generally to the field of computer systems, and more particularly to a system and method for multi-architecture bootstrapping from a removable storage device.
In order to mediate between application programs and the underlying hardware, several layers of software and firmware structure are used. When power is first applied to a computer, the various hardware elements (chips and subsystems) will each have their own internal procedures (reset procedures) to regain a stable and known state. However, at some point (if the hardware is intact), these reset procedures will have ended, and at this point the CPU performs various important overhead tasks. These include, for example, surveying the system configuration, performing sanity checks on system hardware, and permitting the user to branch into an NVRAM configuration program under software control. This phase of operation is generally referred to as “POST” (Power-On-Self-Test).
After POST, a “bootstrap” (or “boot”) program is automatically launched, to permit the CPU to begin execution of other software. The boot program uses data from the master boot record, which in a PC architecture is normally stored in sector 1 (a 512-byte area) of the drive where boot files are located. While executing, the master boot record loads the initial system files from disk into memory. After all operating system files have been loaded, the bootstrap program launches the operating system. The bootstrap program launches the CPU on execution of the primary operating system software; depending on how the system has been set up, the boot software may direct program execution into Vista, OS/X, Unix, or another operating system. This is normally automatic and predetermined, but is manually user-selectable in some systems. At this point the bootstrap program's job is over. The operating system then performs whatever initialization steps it has been configured for, and eventually the computer becomes available for the user to launch whatever applications are desired.
The above description refers to the world of computers, but many low-power portable electronics systems present similar issues. As such systems become more common and more versatile, their architecture has some tendency to become more diverse. (The demands of very low power consumption and customized I/O tend to produce diversity.) Many of these devices have processor and/or memory specifications comparable to a personal computer of a decade or so previously, and some have much more. Many of these portable electronics designs are designed around one primary application, with other features added on. For example, PDA (personal digital assistant) phone designs may show some differences in design, depending on whether the product (or company) is based in phones or in PDAs. The combination of expensive compute power and battery energy is a powerful force for functional convergence, but many portable electronics market segments still show signs of their more specific origins. Various complex portable electronics functions include game machines, telephones, music and movie players, cameras and video recorders, PDAs, position sensing, cardiac monitors, hybrids of these, and possibly also such newer functions as image-understanding security monitors, face recognition software, and collision avoidance. Thus an extreme diversity of hardware will continue for the near future at least, even while the potential for convergence in creases.
Many developments in portable electronics have been driven by content ownership. Music, videos, and games are frequently pirated, and the gap between the unit price paid by conscientious buyers and the average unit price received by copyright owners is a tax on development. Thus, extreme efforts have been made to develop nonvolatile memory modules which would be impossible to subvert. Advanced memory modules, such as those marketed by SanDisk, commonly contain a processor which can execute cryptographic algorithms invisibly to the host machine, so that the protected content cannot be accessed directly.
Even greater security could be provided by a controlled software environment in the host. This is not easily achieved by a program in a nonvolatile memory module, but could be achieved if the system is booted from the nonvolatile memory module. In this case the boot program can restrict loading of nonstandard operating system components, and/or load monitor processes in addition to the standard operating system components.
The first personal computers would boot from a removable disk (floppy disk), but attempts have also been made to permit booting from a nonvolatile memory module. See U.S. application Ser. No. 07/901,645, which is hereby incorporated by reference.
Multi-platform booting is an even more difficult problem. A bootstrap program has to know what files must be loaded into memory before launching the operating system, and will usually also have to know about constraints on file sequencing and memory locations. This varies widely depending on operating system and hardware environment. For example, as of 2006 an SD card can be inserted into a wide variety of systems, but a significant portion of those systems will not execute IA32 instructions. ARM and PowerPC systems are just two alternative architectures in wide use which are not IA32 compatible. Bootstrap type behavior on these systems cannot be achieved unless compatible binary files are provided for those platforms.
U.S. Pat. No. 5,291,585, which is hereby incorporated by reference, describes a personal computer with BIOS extensions. These BIOS extensions are indexed by a self-describing feature table, which is also stored in the BIOS extension.